package com.gocoolmall.common.valid;


import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
//5.自定义校验
//1）自己编写一个自定义的校验注解
//2）编写一个自定义的校验器
//3）关联自定义的校验器和自定义的校验注解
/*
* 编写一个校验注解
* */
//源信息数据
@Documented
//使用哪个校验器，可指定多个校验器
@Constraint(validatedBy = { ListValueConstraintValidator.class })
//可标注的位置，METHOD： 方法，FIELD：属性，CONSTRUCTOR：构造器，PARAMETER：参数
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
//校验注解的时间，RUNTIME:运行时
@Retention(RUNTIME)
//可重复注解
//@Repeatable(ListValue.List.class)

public @interface ListValue {
    //校验错误信息
    String message() default "{com.gocoolmall.common.valid.ListValue.message}";
    //分组校验
    Class<?>[] groups() default { };
    //
    Class<? extends Payload>[] payload() default { };
    int[] value() default { };

}
